<?php


/**
 * 
 * Autor				   : 	Juan Jose Muñiz Juarez
 * Fecha de Creacion	: 	26/04/2012,  21:38:38
 * Version 				: 	1.0
 * Descripcion 			:
 */
if ( !defined( "RUTA_FISICA_SISTEMA" ) )
  {
     require_once '../../../../config/Constantes.php';
  }

$ruta_sistema = RUTA_FISICA_SISTEMA . "/sistema/";
  
include_once $ruta_sistema . "general/clases/comun/GeneralORM.php";
//include_once "Conexion.php";
//include_once "excepciones/SQLException.php";

class DataBase //implements DataBaseInterface
   {
      private static $_log;
      private $_class;
      private $_method;
      private $_line;
      private static $_motor;
      
      public function __construct( $class, $method = null, $line = null )
        {
           $this -> _class = $class;           
           $this -> _method = $method;
           $this -> _line = $line;
        }

        /**
         * 
         * Nombre         	: 	getORMBaseDatos
         * Descripción   	:	
         * Version 			:  1.0
         * Autor:			   :	Juan Jose Muñiz Juarez
         * Fecha y Hora		:	16/05/2012, 15:24:26
         * params: @param  $class
         * params: @param  $method
         * params: @param  $line
         * return: return_type
         */
     private function getORMBaseDatos( $class = null, $method = null, $line = null )
       {
          if ( !self :: $_motor )
            {
               self :: $_motor = GeneralORM::getORMBaseDatos( $class, $method, $line );
            }
       }   
        
	 /**
	  * 
	  * Nombre         	: 	query
	  * Descripción   	:	Permite ejecutar una query dentro de la base de datos
	  * Version 			:  1.0
	  * Autor:			   :	Juan Jose Muñiz Juarez
	  * Fecha y Hora		:	15/05/2012, 19:00:47
	  * params: @param  $query
	  * params: @param  $class
	  * params: @param  $method
	  * params: @param  $line
	  * params: @param  $generar_log
	  * params: @param  $conexion
	  * params: @return Ambigous <resource, NULL>
	  * return: Ambigous <resource, NULL>
	  */
      public static function query( $query, $class = null, $method = null, $line = null, $generar_log = true, $conexion = null )
         {
            self :: getORMBaseDatos( $class, $method, $line );
           // var_dump( self:: $_motor  );
            return self:: $_motor -> query( $query, $class, $method , $line , $generar_log, $conexion );
         }
   
	  /**
	   * 
	   * Nombre         	: 	delete
	   * Descripción   	:	
	   * Version 			:  1.0
	   * Autor:			   :	Juan Jose Muñiz Juarez
	   * Fecha y Hora		:	15/05/2012, 19:00:53
	   * params: @param  $query
	   * params: @param  $class
	   * params: @param  $method
	   * params: @param  $line
	   * params: @param  $generar_log
	   * params: @param  $conexion
	   * params: @return Ambigous <NULL, resource>
	   * return: Ambigous <NULL, resource>
	   */
      public static function delete( $query, $class = null, $method = null, $line = null, $generar_log = true, $conexion = null  )
         {
            self :: getORMBaseDatos( $class, $method, $line );
            
            return self :: $_motor -> delete( $query, $class, $method, $line, $generar_log, $conexion );
         }
   
	   
         /**
          * 
          * Nombre         : 	update
          * Descripción   	:	
          * Version 			:  	1.0
          * Autor:			:	Juan Jose Muñiz Juarez
          * Fecha y Hora		:	17/05/2012, 17:07:06
          * params: @param  $query
          * params: @param  $class
          * params: @param  $method
          * params: @param  $line
          * params: @param  $generar_log
          * params: @param  $conexion
          * return: return_type
          */
      public static function update( $query, $class = null, $method = null, $line = null, $generar_log = true, $conexion = null  )
         {      
            self :: getORMBaseDatos( $class, $method, $line );

            return self :: $_motor -> update( $query, $class, $method, $line, $generar_log, $conexion );          
         }
         
	   /**
	    * 
	    * Nombre         : 	insert
	    * Descripción   	:	Ejecuta la consutal insert
	    * Version 			:  	1.0
	    * Autor:			:	Juan Jose Muñiz Juarez
	    * Fecha y Hora	:	18/04/2012 15:31:38
	    * params: @param  $query
	    * params: @param  $class
	    * params: @param  $method
	    * params: @param  $line
	    * params: @param  $generar_log
	    * params: @param  $conexion
	    * params: @return Ambigous <NULL, resource>
	    * return: Ambigous <NULL, resource>
	    */
      public static function insert(  $query, $class = null, $method = null, $line = null, $generar_log = true, $conexion = null  )
         {
            self :: getORMBaseDatos( $class, $method, $line );
            
            return self :: $_motor -> insert(  $query, $class, $method, $line, $generar_log, $conexion );
         }
         
         /**
          * 
          * Nombre         : 	getArrayResult
          * Descripción   	:
          * Version 			:  1.0
          * Autor:			:	Juan Jose Muñiz Juarez
          * Fecha y Hora	:	15/05/2012, 18:59:45
          * params: @param  $resultados
          * params: @param  $asociativo
          * params: @param  $class
          * params: @param  $method
          * params: @param  $line
          * params: @return Ambigous <multitype:, multitype:>
          * return: Ambigous <multitype:, multitype:>
          */
       public static function getArrayResult( $resultados, $asociativo = true, $class = null, $method = null, $line = null )
         {
            self :: getORMBaseDatos( $class, $method, $line );
            
            return self :: $_motor -> getArrayResult( $resultados, $asociativo, $class, $method, $line  );           
         } 

         /**
          * 
          * Nombre         : 	getNumeroRegistros
          * Descripción   	:	
          * Version 			:  	1.0
          * Autor:			:	Juan Jose Muñiz Juarez
          * Fecha y Hora	:	15/05/2012, 18:22:26
          * params: @param  $resultados
          * params: @param  $class
          * params: @param  $method
          * params: @param  $line
          * params: @return number
          * return: number
          */
       public static function getNumeroRegistros( $resultados, $class = null, $method = null, $line = null )
         {
            self :: getORMBaseDatos( $class, $method, $line );
            
            return self :: $_motor -> getNumeroRegistros( $resultados, $class, $method, $line );
         }  
         
         /**
          * 
          * Nombre         : 	getNumeroCampos
          * Descripción   	:	
          * Version 			:  1.0
          * Autor:			:	Juan Jose Muñiz Juarez
          * Fecha y Hora	:	15/05/2012, 18:22:29
          * params: @param  $resultados
          * params: @param  $class
          * params: @param  $method
          * params: @param  $line
          * params: @return number
          * return: number
          */
       public static function getNumeroCampos( $resultados, $class = null, $method = null, $line = null )
         {
            self :: getORMBaseDatos( $class, $method, $line );
            
            return self :: $_motor ->  getNumeroCampos( $resultados, $class, $method, $line );
         }  
   }